/**
 * 
 */
package com.mas.producer;

import java.util.Calendar;

/**
 * Gives basic API for querying production values available for a specific time.
 * @author Dudi & Efi
 *
 */
public class ProducerInformationService {
	/**
	 * Singleton variable.
	 */
	private static ProducerInformationService instance = new ProducerInformationService();
	private ProducerInformationService() {}
	/**
	 * Production values for January. Contains 31 days.
	 */
	private static final double[][] JAN = 
									{{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16},
									{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16},
									{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16},
									{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16},
									{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16},
									{503540.4835,1007080.967,1510621.45,2014161.934,2517702.417,3021242.901,3524783.384,4028323.868,4531864.351,5035404.835,5538945.318,6546026.285,6042485.802,5538945.318,5035404.835,4531864.351,4028323.868,3524783.384,3021242.901,2517702.417,2014161.934,1510621.45,1007080.967,503540.4835},
									{503540.4835,1007080.967,1510621.45,2014161.934,2517702.417,3021242.901,3524783.384,4028323.868,4531864.351,5035404.835,5538945.318,6546026.285,6042485.802,5538945.318,5035404.835,4531864.351,4028323.868,3524783.384,3021242.901,2517702.417,2014161.934,1510621.45,1007080.967,503540.48},

									{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16},
									{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16},
									{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16},
									{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16},
									{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16},
									{503540.4835,1007080.967,1510621.45,2014161.934,2517702.417,3021242.901,3524783.384,4028323.868,4531864.351,5035404.835,5538945.318,6546026.285,6042485.802,5538945.318,5035404.835,4531864.351,4028323.868,3524783.384,3021242.901,2517702.417,2014161.934,1510621.45,1007080.967,503540.4835},
									{503540.4835,1007080.967,1510621.45,2014161.934,2517702.417,3021242.901,3524783.384,4028323.868,4531864.351,5035404.835,5538945.318,6546026.285,6042485.802,5538945.318,5035404.835,4531864.351,4028323.868,3524783.384,3021242.901,2517702.417,2014161.934,1510621.45,1007080.967,503540.48},
									
									{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16},
									{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16},
									{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16},
									{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16},
									{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16},
									{503540.4835,1007080.967,1510621.45,2014161.934,2517702.417,3021242.901,3524783.384,4028323.868,4531864.351,5035404.835,5538945.318,6546026.285,6042485.802,5538945.318,5035404.835,4531864.351,4028323.868,3524783.384,3021242.901,2517702.417,2014161.934,1510621.45,1007080.967,503540.4835},
									{503540.4835,1007080.967,1510621.45,2014161.934,2517702.417,3021242.901,3524783.384,4028323.868,4531864.351,5035404.835,5538945.318,6546026.285,6042485.802,5538945.318,5035404.835,4531864.351,4028323.868,3524783.384,3021242.901,2517702.417,2014161.934,1510621.45,1007080.967,503540.48},
									
									{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16},
									{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16},
									{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16},
									{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16},
									{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16},
									{503540.4835,1007080.967,1510621.45,2014161.934,2517702.417,3021242.901,3524783.384,4028323.868,4531864.351,5035404.835,5538945.318,6546026.285,6042485.802,5538945.318,5035404.835,4531864.351,4028323.868,3524783.384,3021242.901,2517702.417,2014161.934,1510621.45,1007080.967,503540.4835},
									{503540.4835,1007080.967,1510621.45,2014161.934,2517702.417,3021242.901,3524783.384,4028323.868,4531864.351,5035404.835,5538945.318,6546026.285,6042485.802,5538945.318,5035404.835,4531864.351,4028323.868,3524783.384,3021242.901,2517702.417,2014161.934,1510621.45,1007080.967,503540.48},
									{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16},
									{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16},
									{1208497.16,2416994.321,3625491.481,4833988.641,6042485.802,7250982.962,8459480.122,9667977.283,10876474.44,12084971.6,13293468.76,15710463.08,14501965.92,13293468.76,12084971.6,10876474.44,9667977.283,8459480.122,7250982.962,6042485.802,4833988.641,3625491.481,2416994.321,1208497.16}
								};
	/**
	 * Production values for August. Contains 31 days.
	 */
	private static final double[][] AUG = {{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319}
	};
	
	/**
	 * Production values for September. Contains 31 days.
	 */
	private static final double[][] SEP = {{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319}
	};
	
	/**
	 * Production values for October. Contains 31 days.
	 */
	private static final double[][] OCT = {{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319}
	};
	
	/**
	 * Production values for November. Contains 31 days.
	 */
	private static final double[][] NOV = {{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		{577262.6329,1154525.266,1731787.899,2309050.532,2886313.164,3463575.797,4040838.43,4618101.063,5195363.696,5772626.329,6349888.962,7504414.227,6927151.595,6349888.962,5772626.329,5195363.696,4618101.063,4040838.43,3463575.797,2886313.164,2309050.532,1731787.899,1154525.266,577262.6329},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319},
		{1385430.319,2770860.638,4156290.957,5541721.276,6927151.595,8312581.913,9698012.232,11083442.55,12468872.87,13854303.19,15239733.51,18010594.15,16625163.83,15239733.51,13854303.19,12468872.87,11083442.55,9698012.232,8312581.913,6927151.595,5541721.276,4156290.957,2770860.638,1385430.319}
	};
	/**
	 * What is the cost of production per single kWT.
	 */
	public static final float COST_OF_PRODUCTION = 0.45f; 
	/**
	 * Retrieve singleton object.
	 */
	public static ProducerInformationService getInstance() {
		return instance;
	}
	
	/**
	 * Buy the actual consumption. Currently the time range supported is only within the same day.
	 * @param from - From this date
	 * @param to - To date. to > from
	 * @param amount - How much do you wish to buy.
	 * @return True if buying was successful, false otherwise.
	 */
	public boolean buyConsumption(Calendar from, Calendar to, double amount) {
		// First check that we have this amount of consumption.
		if (getConsumption(from, to) < amount) {
			// No we don't.
			return false; 
		}
		// We have enough. Remove this amount from our reserves.
		// Get chosen month.
		double[][] chosenMonth = getChosenMonth(from);
		// Now check which day of the week.
		int dayOfTheWeek = from.get(Calendar.DAY_OF_MONTH);
		// Check from hour.
		int fromHour = from.get(Calendar.HOUR_OF_DAY);
		// Check to hour.
		int toHour = to.get(Calendar.HOUR_OF_DAY);
		
		// Iterate over hours.
		for (int i = fromHour; i <= toHour && amount > 0; i++) {
			// Use as much as possible per hour.
			if (chosenMonth[dayOfTheWeek][i] < amount) {
				amount -= chosenMonth[dayOfTheWeek][i];
				chosenMonth[dayOfTheWeek][i] = 0;
			}
			// We have more than what is requested.
			else {
				chosenMonth[dayOfTheWeek][i] -= amount;
				amount = 0;
			}
		}
		
		return true;
	}
	/**
	 * Get the consumption available in kWT per hour in a specific time range.
	 * Currently the time range supported is only within the same day.
	 * @param from - From date
	 * @param to - To date. to > from
	 * @return consumption available in kWT per hour
	 */
	public double getConsumption(Calendar from, Calendar to) {
		if (from == null || to == null) {
			throw new NullPointerException();
		}
		// Check that to > from and that all is taking place in the same day.
		if (!to.after(from)) {
			throw new IllegalArgumentException("to < from");
		}
		// Check that everything happens on the same day.
		if (from.get(Calendar.MONTH) != to.get(Calendar.MONTH)|| 
			from.get(Calendar.YEAR) != to.get(Calendar.YEAR) ||
			from.get(Calendar.DAY_OF_MONTH) != to.get(Calendar.DAY_OF_MONTH)) 
		{
			
			throw new IllegalArgumentException("Dates differ");
		}
		// Holds the chosen month.
		double[][] chosenMonth;
		// The consumption.
		double returnValue = 0;
		// Now check the consumption.
		// Start from the month.
		chosenMonth = getChosenMonth(from);
		
		// Now check which day of the week.
		int dayOfTheWeek = from.get(Calendar.DAY_OF_WEEK);
		// Check from hour.
		int fromHour = from.get(Calendar.HOUR_OF_DAY);
		// Check to hour.
		int toHour = to.get(Calendar.HOUR_OF_DAY);
		// Iterate and sum.
		for (int i = fromHour; i <= toHour; i++) {
			returnValue += chosenMonth[dayOfTheWeek][i];
		}
		
		return returnValue;
	}

	/**
	 * Retrieve the chosen month according to the date.
	 * @param date - Extract month from this date.
	 * @return Chosen month matrix.
	 */
	private double[][] getChosenMonth(Calendar date ) {
		double[][] chosenMonth;
		int month = date.get(Calendar.MONTH);
		switch (month) {
		case 0:
			chosenMonth = JAN;	
			break;
		case 7:
			chosenMonth = AUG;
			break;
		case 8:
			chosenMonth = SEP;
			break;
		case 9:
			chosenMonth = OCT;
			break;
		case 10:
			chosenMonth = NOV;
			break;
		default:
			throw new IllegalArgumentException("Month is invalid: " + month);
		}
		return chosenMonth;
	}
}
